/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import bean.Anais;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;


/**
 *
 * @author fernando
 */
public class AnaisDao {
    private Conexao conexao;
    private PreparedStatement ps;
    private boolean sucess = false;

    public AnaisDao() {
        conexao = new ConexaoPostgres();
    }

    public boolean cadastrarAnais(Anais anais) {
        sucess = false;

        try {
            System.out.println("Cadastro Anais: " + anais.getTitulo());
            ps = conexao.getConnection().prepareStatement("INSERT INTO obra(titulo, data_inicio, data_fim, cidade_publicacao, uf_publicacao, pais_publicacao, tipo, issn_isbn, ano) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) ");
            ps.setString(1, anais.getTitulo());
            Date data_inicio = new Date(anais.getDataInicio().getTime());
            ps.setDate(2, data_inicio);
            Date data_fim = new Date(anais.getDataFim().getTime());
            ps.setDate(3, data_fim);
            ps.setString(4, anais.getCidadePublicacao());
            ps.setString(5, anais.getUfPublicacao());
            ps.setString(6, anais.getPaisPublicacao());
            ps.setString(7, "Anais");
            ps.setString(8, anais.getISSN_ISBN());
            ps.setInt(9, anais.getAnoPublicacao());
            
            ps.executeUpdate();
            conexao.closeConnection();

            sucess = true;
        } catch (SQLException ex) {
            conexao.closeConnection();
            Logger.getLogger(InstituicaoDao.class.getName()).log(Level.SEVERE, null, ex);
            return sucess;
        }

        conexao.closeConnection();
        return sucess;
    }

    public boolean alterarAnais(Anais anais) {
        sucess = false;


        try {

            ps = conexao.getConnection().prepareStatement("UPDATE obra SET titulo = ? , data_inicio = ? , data_fim = ? , cidade_publicacao = ? , uf_publicacao = ? , pais_publicacao = ?, issn_isbn = ?, ano = ? where id = ?");

            ps.setString(1, anais.getTitulo());
            Date data_inicio = new Date(anais.getDataInicio().getTime());
            ps.setDate(2, data_inicio);
            Date data_fim = new Date(anais.getDataFim().getTime());
            ps.setDate(3, data_fim);
            ps.setString(4, anais.getCidadePublicacao());
            ps.setString(5, anais.getUfPublicacao());
            ps.setString(6, anais.getPaisPublicacao());
            ps.setString(7, anais.getISSN_ISBN());
            ps.setInt(8, anais.getAnoPublicacao());
            ps.setInt(9, anais.getId());
            ps.executeUpdate();
            conexao.closeConnection();
            sucess = true;

        } catch (SQLException ex) {
            conexao.closeConnection();
            Logger.getLogger(InstituicaoDao.class.getName()).log(Level.SEVERE, null, ex);
            return sucess;
        }

        conexao.closeConnection();
        return sucess;
    }

    public boolean removerAnais(Anais anal) {
        sucess = false;
        try {

            ps = conexao.getConnection().prepareStatement(" DELETE FROM obra WHERE id = ?");
            ps.setLong(1, (anal.getId()));
            ps.executeUpdate();
            conexao.closeConnection();

            sucess = true;
        } catch (SQLException ex) {
            conexao.closeConnection();
            ex.printStackTrace();
            return sucess;
        }

        conexao.closeConnection();
        return sucess;
    }

    public ArrayList<Anais> listarAnais() {
        ArrayList<Anais> anais = new ArrayList<Anais>();
        try {
            ps = conexao.getConnection().prepareStatement("SELECT * FROM obra WHERE tipo = 'Anais' ORDER BY titulo");
            ResultSet rs = ps.executeQuery();

            while (rs.next()) {
                Anais a = new Anais();

                a.setTitulo(rs.getString("titulo"));
                a.setDataInicio(rs.getDate("data_inicio"));
                a.setDataFim(rs.getDate("data_fim"));
                a.setCidadePublicacao(rs.getString("cidade_publicacao"));
                a.setUfPublicacao(rs.getString("uf_publicacao"));
                a.setId(rs.getInt("id"));
                a.setAnoPublicacao(rs.getInt("ano"));
                a.setISSN_ISBN(rs.getString("issn_isbn"));

                anais.add(a);


            }
            
        } catch (SQLException ex) {
            conexao.closeConnection();
            Logger.getLogger(InstituicaoDao.class.getName()).log(Level.SEVERE, null, ex);
        }



        conexao.closeConnection();
        return anais;

    }

    public Anais consultaAnais(int id) {
        PreparedStatement ps = null;
        Anais a = null;
        try {
            a = new Anais();
            ps = conexao.getConnection().prepareStatement("Select * from obra where id = ?; ");
            ps.setInt(1, id);
            ResultSet rs = ps.executeQuery();
            if (rs.next()) {

                a.setTitulo(rs.getString("titulo"));
                a.setDataInicio(rs.getDate("data_inicio"));
                a.setDataFim(rs.getDate("data_fim"));
                a.setCidadePublicacao(rs.getString("cidade_publicacao"));
                a.setUfPublicacao(rs.getString("uf_publicacao"));
                a.setId(rs.getInt("id"));
                a.setAnoPublicacao(rs.getInt("ano"));
                a.setISSN_ISBN(rs.getString("issn_isbn"));
                a.setTipo(rs.getString("tipo"));

            }
        } catch (SQLException ex) {
            conexao.closeConnection();
            return a;

        }
        conexao.closeConnection();
        return a;
    }
    
}
